# Scripting命令

# EVAL

# 语法

EVAL script numkeys [key [key ...]] [arg [arg ...]]

# 描述

在服务器端执行Lua脚本

# 参数

  • key

键名

  • script

待执行的 Lua 脚本

  • numkeys

后续键名的数量。这些键之后的参数将作为普通参数传递

  • arg

通过 Lua 的 ARGV 变量提供给脚本的附加参数

# 示例

> EVAL "return ARGV[1]" 0 hello
"hello"

# EVAL_RO

# 语法

EVAL_RO script numkeys [key [key ...]] [arg [arg ...]]

# 描述

执行一段只读的 Lua 脚本。与 EVAL 命令不同,它不能运行任何会修改数据的命令

# 参数

  • key

键名

  • script

待执行的 Lua 脚本

  • numkeys

后续键名的数量。这些键之后的参数将作为普通参数传递

  • arg

通过 Lua 的 ARGV 变量提供给脚本的附加参数

# 示例

> SET mykey "Hello"
OK
> EVAL_RO "return redis.call('GET', KEYS[1])" 1 mykey
"Hello"
> EVAL_RO "return redis.call('DEL', KEYS[1])" 1 mykey
(error) ERR Error running script (call to b0d697da25b13e49157b2c214a4033546aba2104): @user_script:1: @user_script: 1: Write commands are not allowed from read-only scripts.

# EVALSHA

# 语法

EVALSHA sha1 numkeys [key [key ...]] [arg [arg ...]]

# 描述

服务器通过 SCRIPT LOAD 命令来缓存脚本。除此之外,该命令与 EVAL 命令完全相同

# 参数

  • key

键名

  • numkeys

后续键名的数量。这些键之后的参数将作为普通参数传递

  • arg

通过 Lua 的 ARGV 变量提供给脚本的附加参数

  • sha1

待执行的 Lua 脚本


# EVALSHA_RO

# 语法

EVALSHA_RO sha1 numkeys [key [key ...]] [arg [arg ...]]

# 描述

这是 EVALSHA 命令的只读版本,无法执行任何会修改数据的命令

# 参数

  • key

键名

  • numkeys

后续键名的数量。这些键之后的参数将作为普通参数传递

  • arg

通过 Lua 的 ARGV 变量提供给脚本的附加参数

  • sha1

待执行的 Lua 脚本


# SCRIPT EXISTS

# 语法

SCRIPT EXISTS sha1 [sha1 ...]

# 描述

返回脚本缓存中脚本的存在信息

# 参数

  • sha1

待执行的 Lua 脚本


# SCRIPT FLUSH

# 语法

SCRIPT FLUSH [ASYNC | SYNC]

# 描述

清空 Lua 脚本缓存

# 参数

  • ASYNC | SYNC

异步(ASYNC)或同步(SYNC)地清空脚本缓存。默认行为由 lazyfree-lazy-user-flush 配置指令决定


# SCRIPT KILL

# 语法

STRIPT KILL

# 描述

终止当前正在执行的 EVAL 脚本,前提是该脚本尚未执行任何写操作


# SCRIPT LOAD

# 语法

SCRIPT LOAD script

# 描述

将脚本加载到脚本缓存中,但不执行它。在指定的命令被加载到脚本缓存后,即可使用带有该脚本正确 SHA1 摘要的 EVALSHA 命令来调用它,这与首次成功执行 EVAL 命令后的效果完全相同

# 参数

  • script

需要加载到脚本缓存中的 Lua 脚本。系统会返回该脚本的 SHA1 摘要,以便配合 EVALSHA 命令使用


# SCRIPT

# 语法

SCRIPT

# 描述

这是一个用于脚本管理命令的容器命令